Cloud computing is a generally adopted concept addressing a business model of providing computing resources to customers as utility over network. There are a lot of benefits for both the customers and the providers associated with cloud computing. For example, the customers can run various business applications on one or more different platforms without the need to acquire and manage the necessary hardware and software system resources. Furthermore, the amount of consumed resources may change dynamically to match current requirements or demands. In turn, the providers of cloud infrastructure and services have the freedom to focus on developing their system platform offerings instead of marketing business services to end clients.
Cloud computing is characterized by a number of factors, some of which effect the total cost of operations for both, the providers and the customers of on-demand computing resources. For example, it is often a cumbersome task to select the proper runtime components needed by a customer application to operate efficiently on the cloud. Usually, a set of required runtime components to run a business application of the cloud, besides the business applications itself, could be rather big, including, but not limited to core elements of a runtime environment (e.g. application server), enterprise services providing additional system functionality to the deployed applications, internal configuration information, etc. Once selected, the necessary runtime components have to be provisioned to the cloud system environment. Depending on the complexity of the solution, this provisioning or installation process may involve a series of tedious and prone to errors administrative tasks.
Typically, there is no predictability of whether the provisioning process will be successful or not. For example, a failure of the installation in the last stages, e.g., when the installation of a business application fails, the resources consumed during the installation of the runtime platform necessary for the installation and execution of the application, are wasted. Therefore, the components of an entire solution are changed and updated offline, before installing on a cloud environment, to perform exhaustive tests to guarantee the operability of the solution. The tests should ensure compatibility between customer's application and the provided runtime platform in the cloud environment.